/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package logica;

import fisica.CapaFisica;
import fisica.GrupoTerapeuticoMedicamentoFisica;
import hibernate.objeto.GrupoTerapeuticoMedicamento;
import java.util.Vector;

/**
 *
 * @author Gonzalo
 */
public class GrupoTerapeuticoMedicamentoLogica extends CapaLogica {

    /**
     * Crea y persiste el grupo terapéutico del medicamento.
     *
     * @param datosMedicamento Los datos de la composición
     * creada para su posterior recuperación
     * @param idGrupoTerapeuticoMedicamento El id del objeto
     * @return true si se agregó/modificó correctamente, false en caso contrario
     */
    public static boolean agregarOModificarGrupoTerapeuticoMedicamento(
            Object[] datosMedicamento, int[] idGrupoTerapeuticoMedicamento) {
        //Crea el objeto
        GrupoTerapeuticoMedicamento grupoTerapeuticoMedicamento =
                crearUObtenerObjetoGrupoTerapeuticoMedicamento(datosMedicamento);

        //Persiste el objeto
        if (CapaFisica.guardarOActualizarObjeto(grupoTerapeuticoMedicamento)) {
            idGrupoTerapeuticoMedicamento[0] = grupoTerapeuticoMedicamento
                    .getIdGrupoTerapeuticoMedicamento();
            return true;
        } else {
            return false;
        }
    }

    /**
     * Crea un objeto GrupoTerapéutico y si ya existe lo obtiene de la base de
     * datos.
     *
     * @param datosMedicamento Los datos del grupo terapéutico
     * @return El objeto creado u obtenido
     */
    private static GrupoTerapeuticoMedicamento
            crearUObtenerObjetoGrupoTerapeuticoMedicamento(
            Object[] datosMedicamento) {

        GrupoTerapeuticoMedicamento retorno =
                getGrupoTerapeuticoMedicamentoPorNombreYEnBd(datosMedicamento[
                    CapaLogica
                    .MEDICAMENTO_GRUPO_TERAPEUTICO].toString());

        if (retorno == null) {
            retorno = new GrupoTerapeuticoMedicamento();
            retorno.setNombreGrupoTerapeuticoMedicamento(datosMedicamento[
                    CapaLogica.MEDICAMENTO_GRUPO_TERAPEUTICO].toString());
            retorno.setEnBdGrupoTerapeuticoMedicamento(true);
        }

        return retorno;
    }

    /**
     * Retorna el vector de objetos GrupoTerapéuticoMedicamento según el nombre
     * del grupo terapéutico.
     *
     * @param nombreGrupoTerapeutico El nonbre del grupo terapéutico
     * @return El vector de objetos GrupoTerapeuticoMedicamento consultado, null
     * si no existe
     */
    public static Vector<GrupoTerapeuticoMedicamento>
            getVectorGrupoTerapeuticoMedicamentoPorNombreYEnBd(String grupoTerapeutico){
        return GrupoTerapeuticoMedicamentoFisica.
                getVectorGrupoTerapeuticoMedicamentoPorNombreYEnBd(
                reemplazarUnApostrofoPorDosApostrofos(
                grupoTerapeutico), true);
    }

    /**
     * Retorna el objeto GrupoTerapéuticoMedicamento según el nombre del grupo
     * terapéutico.
     *
     * @param nombreGrupoTerapeutico El nonbre del grupo terapéutico
     * @return El objeto GrupoTerapeuticoMedicamento consultado, null si no
     * existe
     */
    public static GrupoTerapeuticoMedicamento
            getGrupoTerapeuticoMedicamentoPorNombreYEnBd(String grupoTerapeutico) {
        return GrupoTerapeuticoMedicamentoFisica.
                getGrupoTerapeuticoMedicamentoPorNombreYEnBd(
                reemplazarUnApostrofoPorDosApostrofos(
                grupoTerapeutico), true);
    }

    /**
     * Retorna el objeto GrupoTerapeuticoMedicamento según el id.
     *
     * @param idGrupoTerapeuticoMedicamento  El id del grupo terapéutico del
      * medicamento
     * @return El objeto GrupoTerapeuticoMedicamento consultado, null si no existe
     */
    public static GrupoTerapeuticoMedicamento getGrupoTerapeuticoMedicamentoPorId(
            int idGrupoTerapeuticoMedicamento) {
        return GrupoTerapeuticoMedicamentoFisica.
                getGrupoTerapeuticoMedicamentoPorId(idGrupoTerapeuticoMedicamento);
    }

}
